In non-volatile semiconductor memories, a plurality of memory cells, each replacing each piece of information with an amount of charges and holding the amount of charges are installed in a chip. A plurality of memory cells in the chip are divided into a plurality of groups called blocks, and each block is further divided into groups called pages including a plurality of memory cells. For example, the “block” is a minimum unit for erasing data in a chip, and the “page” is a minimum unit for writing/reading data to/from the chip.
In a memory cell which replaces information with an amount of charges and holds the amount of charges, information is recorded in association with a magnitude of the amount of charges. Therefore, in a case in which it is unable to be set to a desired amount of charges at the time of writing or in a case in which charges are discharged with the lapse of time, an error occurs in information read from the memory cell. An error caused by a fluctuation in the amount of charges is referred to as a soft error. As a countermeasure against the soft error, a method of performing error correction coding on information data to be recorded and recording redundant data generated by the error correction coding in a chip together with the information data is known. Such error correction coding is commonly performed in units of pages or in units of sub pages obtained by dividing page data.